home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-02 | 43.3 KB | 1,100 lines |
- Willkommen zur StormC-Demoversion 1.1
-
- [1m © HAAGE & PARTNER Computer GmbH [0m
-
- Mainzer Straße 10A
- 61191 Rosbach v.d.H.
-
- Tel: 0 60 07 / 93 00 50
- Fax: 0 60 07 / 75 43
-
- Compuserve: 100654,3133
- Internet: 100654.3133@compuserve.com
- Homepage: http://ourworld.compuserve.com/homepages/haage_partner
-
-
- Bereits zur Computer 95 im November 95 war eine Vorversion unseres
- neuen Compilersystems erhältlich. Die verwirklichten Konzepte und
- eingeflossenen neuen Innovationen haben auch die Presse überzeugt, wie
- Sie in einigen Berichten in den Januar- und Februar-Ausgaben der gängigen
- Amiga-Zeitschriften nachlesen können.
-
- Hier nur einige Auszüge:
-
- Amiga Plus 1/96
-
- Neue Konzepte bei Entwicklung und Qualitätssicherung...
- Die erste Besonderheit ist die Projektverwaltung, die zum ersten
- Mal bei einem solchen Paket nicht aufgesetzt wirkt...
-
- Amiga Magazin 1/96
-
- Die Projektverwaltung: Endlich einmal ein Tool, das nicht wie ein Klotz
- am Bein wirkt, sondern wirklich nützlich ist.
-
- Amiga Special 2/96
-
- Ein schneller Compiler, der leistungsstarke Debugger und die komfortable
- Entwicklungsumgebung sind eine interessante Mischung, wenn es sich um
- professionelle Softwareentwicklung handelt...
-
- Mit der beiliegenden Demoversion können Sie sich selbst davon überzeugen.
-
- Einschränkungen der Demoversion:
- ================================
-
- Der beiliegende Compiler wird Ihnen zwar große Sourcen durchkompilieren
- aber lediglich maximal 10 KByte große Objektcodes schreiben. Sie haben
- damit zumindest die Gewißheit, daß Ihre großen Projekte auch kompiliert
- werden können.
-
- Der Linker linkt aus den erzeugten Objekten ein Programm mit maximal
- 20 KByte Größe.
-
- Der Linker unterstützt auch nicht die Erzeugung von Shared-Libraries.
-
- Alle Programmteile von StormC lassen sich NICHT über das CLI starten
- sondern sind lediglich in der integrierten Umgebung nutzbar.
-
- Wichtiges zur Installation:
- ===========================
-
- Die vorliegenden Dateien sind dafür vorgesehen, von CD installiert zu
- werden. Wenn Sie die Dateien bereits auf Ihre Festplatte kopiert haben
- ist eine Installation nicht notwendig. Sie müssen dann lediglich einen
- StormC-Assign in die Datei "user-startup" eintragen, damit die Demo-
- Sourcen und StormC-Voreinstellungen unverändert genutzt werden können.
- Desweiteren muß noch die "Wizard.Library" in das Verzeichnis LIBS:
- kopiert werden.
-
- Include-Lizenzen:
- =================
-
- Wenn Sie die Demoversion von einer Mailbox oder vom Aminet geladen
- haben, liegen nur die Includes und Bibliotheken bei, deren Urheber-
- rechte bei uns liegen. Es fehlen die Systemincludes zu Kickstart/Work-
- bench 3.1.
-
- Woher bekommt man die Includes?
- -------------------------------
-
- Wenn Sie die Demoversion direkt bei uns anfordern, werden selbstver-
- ständlich alle Includes und Bibliotheken mitgeliefert. Wir müssen
- allerdings eine Schutzgebühr von 20,- DM berechnen, die Ihnen jedoch
- beim Kauf einer Vollversion von StormC angerechnet wird. Bei einer
- Bestellung per Nachnahme erhöht sich der Preis um die Nachnahmegebühren
- von 13,- DM.
-
- Desweiteren finden Sie die kompletten Includes und Bibliotheken auf den
- CDs des Amiga-Magazins.
-
- Vielleicht haben Sie aber auch bereits die Preview-Version unseres
- StormC-Compilers. Dann haben Sie ebenfalls bereits die Includes
- erhalten und müssen in der Demoversion lediglich folgende Dateien
- ergänzen:
-
- In den Includes die kompletten Verzeichnisse:
-
- datatypes
- devices
- diskfont
- dos
- exec
- gadgets
- graphics
- hardware
- intuition
- libraries
- prefs
- resources
- rexx
- utility
- workbench
-
- In den Libs die Bibliothek:
-
- amiga.lib
- small.lib
- debug.lib
- ddebug.lib
-
- Bitte verwenden Sie nicht einfach die Includes im Verzeichnis
- eines anderen Compilers oder direkt von unserer Preview-Version.
- Es wurden einige Änderungen an den, der aktuellen Demoversion
- mitgelieferten Dateien vorgenommen, so daß nur die beschriebene
- Vorgehensweise zum Erfolg führt.
-
-
- Änderungen und Erweiterungen gegenüber der Preview-Version:
- ===========================================================
-
- Allgemeine
- ----------
-
- Die komplette Umgebung ist nun lokalisiert. Die voreingestellte
- Sprache ist Englisch. Bei der Installation wird automatisch der
- deutschsprachige Catalog kopiert und auch genutzt, wenn Sie
- Workbenck-Lokalisierung deutschsprachig eingestellt haben.
-
- Möchten Sie trotz deutschsprachiger Workbench, mit StormC englisch-
- sprachig arbeiten, genügt es die Locale-Datei im Verzeichnis
- "StormC:StormSYS/CATALOGE/Deutsch/StormCPP.catalog" umzubenennen.
-
- Programmstart:
- --------------
-
- Entgegen der Beschreibung im Handbuch auf der Seite 12 wird das Start-
- bild nicht angezeigt, wenn für Ihren Workbench-Screen weniger als
- 64 Farben eingestellt sind. In diesem Fall erscheint ein kleines Fenster,
- das Sie darauf hinweist, daß das System noch geladen wird.
-
- Nach dem Laden erscheint ein weiteres Fenster, das Sie darüber informiert,
- welche Version Sie benutzen.
-
- Projektverwaltung (StromShell):
- -------------------------------
-
- Bei "Datei(en) hinzufügen" ist eine mehrfache Selektion in der Dateiauswahl
- möglich.
-
- In die Projektfenster können Workbench-Piktogramme (Appwindow) abgelegt
- werden.
-
- Ist ein Sektionstitel markiert, wenn der Menüpunkt "Löschen" angewählt wird,
- erfolgt die Rückfrage, ob der Inhalt der ganzen Sektion gelöscht werden soll.
- Beantworten Sie die Rückfrage mit "JA", wird die komplette Sektion entfernt.
- Die jeweiligen Dateien bleiben selbstverständlich unberührt.
-
- Wird das Debug-Piktogramm oder der Menüpunkt "Debug..." angewählt, obwohl die
- Option zum Erzeugen von Debugger-Dateien im Projekt nicht angewählt sind,
- erfolgt eine Rückfrage, ob große oder kleine Debug-Dateien angelegt werden
- sollen. Die Projekt-Einstellungen bleiben allerdings unbeeinflußt.
-
- Bei Klick auf die Knöpfe "Start..." und "Debug..." aus dem Fehlerfenster,
- wird das Fehlerfenster zuerst geschlossen und dann die entsprechende Programm-
- funktion ausgeführt.
-
- Beim "Make" bereits übersetzter Projekte wird jetzt zurückgefragt, ob nur
- gelinkt oder das ganze Projekt neu kompiliert werden soll.
-
- Der neue Menüpunkt "Bibliothek(en) hinzufügen..." entspricht dem Menüpunkt
- "Datei(en) hinzufügen...", setzt aber den Bibliothekssuchpfad des Projekts
- als Verzeichnis im ASL-Filerequester und das Pattern "#?.lib". Dadurch
- lassen sich deutlich schneller Bibliotheken zum Projekt hinzunehmen.
- Einziges Problem: Mehrfachselektionen werden immer alphabetisch sortiert
- vom ASL-Requester zurückgegeben, die relevante Reihenfolge von
- Bibliotheken kann man also nur erhalten, wenn man jeweils eine Bibliothek
- nach der anderen zum Projekt hinzufügt.
-
- Werden Dateien hinzugefügt, die noch nicht existieren, so wird auf Wunsch
- die Datei "leer" erzeugt. Als Icon wird jeweils versucht das Icon
- "ENV:STORMCPP/def_text.suffix" zu übernehmen, wobei für ".suffix" das Suffix
- des Dateinamens eingesetzt wird (z.B. .c oder .h). Dadurch lassen sich
- für verschiedene Textarten verschiedene Piktogramme und Texteinstellungen
- verwenden.
-
- Die Einstellungen können nun auch von der StormShell gesichert und geladen
- werden.
-
- Für den Linker wurden zwei neue Seiten in den Projekteinsteller eingefügt.
- Eine weitere erhielt der Optimizer des Compilers.
-
- Beim Programmstart kann so ziemlich jeder Parameter der Shell-Umgebung
- eingestellt werden.
-
- Die Codegröße des Executables wird nun nach jedem Compilerlauf neu angezeigt.
- Die Codegröße von Bibliotheken wird nun auch angezeigt, wenn die Bibliothek
- aus dem Suchpfad der Bibliotheken stammt.
-
- Die Einstellung für 32-bit-korrekte-Multiplikation ist entfallen. Der Compiler
- entscheidet selbständig wann welche Multiplikation benötigt wird.
-
- Bei den Einstellern zum C/C+-Compiler ist die Möglichkeit hinzugekommen,
- das kleine oder große Code-Modell zu wählen. Der Compiler und der Linker
- generieren dann kurze Sprünge (bsr).
-
- Hinweis: Zur aktuellen Demoversion werden allerdings keine Bibliotheken
- geliefert, die ein kleines Code-Modell unterstützen. Bei eingeschalteter
- Option werden Ihre Programm demnach nicht lauffähig sein.
-
- Bei "Make" und "Compile" werden nun alle Quelltexte automatisch gesichert.
-
- Die Funktionen der Iconleiste sind nun mit den Funktionstasten F1 bis F6 und
- F7 bis F10 erreichbar.
-
- Das About-Fenster und das Einstellungsfenster kann auch mit ESC geschlossen
- werden. Weitere Shortcuts für About sind "o" und <Return>. Der Use- und der
- Cancel-Knopf des Einstellungsfensters sind auch über ihre Shortcuts bedienbar.
-
- Das Fehlerfenster ist nun tastatursteuerbar: Die Shortcuts für "Run", "Debug"
- und "Cancel" sind implementiert. Wenn gerade ein "Make" läuft, kann man es
- auch mit <ESC> abbrechen, danach, bzw. wenn kein "Make" läuft, wird das
- Fenster durch <ESC> geschlossen. Mit "w" kann man die Warnungen an- und
- ausschalten.
- Per Cursor läuft man durch die Fehlerliste, per <Alt>-Cursor erreicht man
- die erste oder letzte Fehlermeldung. <Return> zeigt die Fehlermeldung im
- Editor an.
-
- Das Projektfenster ist komplett tastatursteuerbar. Alle 4 Cursortasten
- bewegen den Cursor und den Inhalt entsprechend, <Alt> <hoch>/<runter> ermöglicht
- den Sprung an den Anfang/Ende der Einträge, <Shift> <rechts>/<links> an den
- rechten oder linken Rand. <Return> führt die Aktion entsprechend eines
- Doppelklicks aus, <Alt> <Return> die jeweilige Alternative (bisher nur beim
- Executable belegt). Backspace bzw. Delete löschen den Eintrag des Cursor
- aus dem Projekt und setzen den Cursor auf den nachfolgenden Eintrag.
-
- Debugger (StormRUN):
- --------------------
-
- Das im Handbuch beschriebene Debugger-Demo ist leider nur ab
- Betriebssystem V39 lauffähig. Wenn Sie V37/38 installiert haben, sollten
- Sie mit dem Gadtools-Demo probieren.
-
- Der Menüeintrag "Programm sichern als..." (Seite 42) ist in der
- aktuellen Version nicht enthalten, da eine Änderung am Linker eine
- entsprechende Funktionalität verhindert hat.
-
- Variablenwerte einfacher Zahl-Typen (char bis long) können in allen
- Variablen- und Inspektionsfenstern geändert werden.
-
- Die Wertausgabe ist deutlich schneller, da nur noch die Werte
- konvertiert werden, die sich geändert haben.
-
- Die möglichen Breakpoints werden jetzt gefiltert, so daß pro Quelltext-
- zeile nur noch max. ein Breakpoint steht, d.h. jeder Schritt führt auf
- eine nächste Zeile.
-
- In einem Fall des Breakpoint-Löschens wurde der Cache nicht gelöscht, was
- Probleme auf 68040-Rechner zur Folge hatte.
-
- Ein Hexeditor ist eingebaut. Es kann zwischen Byte-, Word- und
- Longanzeige hin- und hergeschaltet werden. Die Eingabe von Adressen
- (sowohl im Gadget wie auch direkt im Text), Hexdaten und ASCII Daten
- ist möglich. Wie im restlichen Debugger wird nur dort etwas angezeigt, bzw
- geändert werden, wo gültiges RAM vorhanden ist. Das verhindert
- Enforcerhits, aber verbietet auch den Zugriff auf I/O-Bausteine.
-
- Mit der TAB-Taste kann der Cursor von der Adresspalte auf die Hex- und
- ASCII-Daten-Spalte und wieder zurück gesetzt werden. Wird in der
- Adresspalte die dort angegebene Adresse überschrieben, springt der
- Hexeditor automatisch zu der Adresse.
-
- Bei "Save Settings" ("Einstellungen Speichern") werden die Fensterposition
- und -größe des Hexeditors auch gespeichert.
-
- Das "Casting" funktioniert. Dazu wurde das Cycle-Gadget in den Variablen-
- fenstern gegen ein Stringgadget ausgetauscht (in einer Objektdatei
- können schnell mal > 100 Typen auftauchen - mit einem Cyclegadget ist das
- nicht handhabbar). Bislang muß in dieses Stringgadget der Typ exakt so eingetippt werden, wie
- er ausgegeben würde.
-
- Wenn eine Adresse illegal ist, wird jetzt die betroffene Adresse ausgegeben
- (statt "--").
-
- Die Typ-Ausgabe kann bekanntlich in zwei Modi erfolgen: ANSI-C oder
- AMIGA-C (mit ULONG, BYTE etc). Diese Unterscheidung kann der Compiler
- leider nicht in den Debuginfos ablegen. Derzeit wird die AMIGA-C-
- Schreibweise verwendet (kompakter).
-
- Der Start des Programms ist jetzt systemkonformer und -kompatibler. Auch
- Aufrufe von Execute() oder SystemTagList() funktionieren jetzt und,
- wenn als Ausgabe die Console gewählt wird, kommen Ausgaben der
- Befehle auch auf die Console. Das Programm erscheint jetzt auch in der Liste
- der CLIs, einen Kommandonamen in den Projekteinstellungen anzugeben ist also
- sinnvoll.
-
- Das Resource-Tracking ist nun implementiert. Am Ende des Programms oder nach
- einem Kill werden bisher Screens, Windows, Memory, Libraries, Locks und
- Files angezeigt, die nicht geschlossen oder freigegeben wurden. Ein
- Doppelklick in die Liste führt an die Stelle des Funktionsaufruf. Das
- neue Menü "Debug" enthält einen Menüpunkt "Flush Resources"
- ("Ressourcen freigeben") zur Freigabe dieser Ressourcen.
-
- In manchen Programmen werden sehr viele Ressourcen alloziert, insbesondere
- natürlich Speicher. Solche Ressourcen, die also keinen direkten
- Funktionsaufruf im Programm besitzen werden nicht angezeigt, aber dennoch
- freigegeben.
- Ein schönes Beispiel hierfür kann mit der ASL-Library verdeutlicht werden.
- Wenn Sie ein Programm "killen", währen ein ASL-Requester offen ist, wird
- das ASL-Fenster geschlossen, obwohl der OpenWindow-Aufruf nicht aus Ihrem
- Programm sondern aus der ASL-Library gemacht wurde.
-
- Das Ressource-Tracking kann nur den unmittelbare "Caller" ermitteln.
- D.h. die Funktion, die den jsr d(a6) enthält. Schon eine Stub-Funktion
- für Library-Aufrufe verhindert deshalb die korrekte Anzeige des Aufrufs.
- Deshalb ist es angeraten Stub-Funktionen zu vermeiden und "pragma amicall"-
- und "tagcall"-Aufrufe zu verwenden.
-
-
- Editor:
- =======
-
- Help-Funktion
- -------------
-
- Mit drücken der Help Taste kann man das Wort unter dem Cursor an die
- AmigaGuide-Library übergeben. AmigaGuide wird dann veranlaßt,
- das Schlüsselwort zu suchen und den Hilfetext anzuzeigen!
-
- Für den Editor wurden zwei neue Menüpunkte eingeführt:
- 1. Einstellungen für den Editor allgemein...
- 2. ...und für jeden Text im besonderen.
-
- Folgende Editoreinstellungen werden, wie im Fenster zu sehen, bereits
- unterstützt: Autosave, Backups, Strip EOL Blanks und Textfontwahl.
-
- Autosave kennt zwei Algorithmen:
- Entweder wird alle "n" Minuten ein normales Save durchgeführt, oder
- es wird der Text in eine Extradatei gesichert. Der Name dieser
- Extradatei wird automatisch durch dem Namen des Dokuments mit einem
- angehängten ";0" erzeugt.
-
- Das Sichern in diese Extradatei verändert natürlich nicht den
- Textnamen und setzt auch nicht das Modify-Flag "M" zurück.
-
- Zusätzlich kann man beim automatischen Sichern nachfragen lassen, ob
- gesichert werden soll.
-
- Hat der Text keinen Namen, wird der Benutzer aufgefordert, den Text zu
- sichern, ein Autosave wird dann nicht mehr durchgeführt. Beim Laden eines
- Textes wird überprüft, ob eine Autosave-Datei jüngeren Datums existiert, in
- diesem Fall bekommt der Benutzer die Wahl welche Datei er laden will, als
- Textname wird in beiden Fällen der Originaldateiname gewählt.
-
- Man kann bis zu 9 Backup-Dateien anlegen. Bei jedem Sichern des Textes (auch
- bei Autosave auf die Originaldatei) werden die Backup-dateinamen hochgezählt
- (die älteste Datei geht dabei eventuell verloren). Die Namen der Backup-
- Dateien
- ergeben sich aus dem Namen der Originaldatei mit angehängtem ";N", wobei
- "N" eine Ziffer zwischen 1 und 9 ist. Die älteste Datei ist die Datei mit
- der höchsten Nummer, die jüngste mit der Nummer 1.
-
- Beim Sichern kann man alle "white spaces", d.h. insb. Spaces und Tabs am
- Ende der Textzeilen entfernen lassen.
-
- Als Zeichensatz kann jeder nicht-proportionale Zeichensatz angegeben werden.
-
- Achtung: Momentan wird noch keine Fehlermeldung ausgegeben, wenn ein
- ungültiger (d.h. nicht existierender oder proportionaler) Zeichensatz
- angegeben wird. Es ist empfehlenswert wirklich Zeichensätze auszuwählen,
- deren Zeichen alle gleich breit sind. Dies gilt z.B. nicht für den Courier-
- Zeichensatz, manche Zeichen sind breiter als die im Font angegebene Breite.
- Dadurch kann es zu leichten Darstellungsfehlern am Rand des Texts kommen.
-
- Die Tabulatorweite kann eingestellt werden und wird mit dem Tooltype
- TABWIDTH gespeichert.
-
- Automatische Einrückungen können durch "{" und "}" ausgelöst werden.
- Bislang wird nur eingerückt (d.h. nur auf das Zeichen "{" reagiert).
- Man kann wählen, ob Spaces oder Tabs eingefügt werden, und wieviel
- jeweils.
-
- Dabei werden 2 Methoden und ihre Kombinationen unterstützt:
-
- 1. Vor der Klammer eingerückt bedeutet, daß beim Eingeben der Klammer
- diese eingerückt wird, wenn vor der Klammer nur Spaces oder Tabs in
- der Zeile stehen. Nach der Klammer wird nach dem nächsten Zeilenum-
- bruch eingerückt, wenn die Klammer das letzte Zeichen der vorherigen
- Zeile ist.
-
- Man kann auswählen, welche Lexika eingefärbt werden und die Syntaxein-
- färbungen für C/C++ Kommentare, Strings, Char-Konstanten und Zahl-Konstanten.
-
- Die Einfärbung von C-Kommentaren (/* Test */) funktioniert mit
- Einschränkungen:
-
- geschachtelte Kommentare sind nicht möglich (werdem allerdings vom
- Compiler auch nicht unterstützt, #if 0 ... #endif macht das auch
- besser).
-
- Die gesamte Einfärberei hat einige Einschränkungen, die jetzt erst
- mit den C-Kommentaren wirklich zum Vorschein kommen: Verschachtelte
- Einfärbungen, z.B. C++-Kommentare, die in einem C-Kommentar stehen,
- können die Einfärbung durcheinander bringen. Werden die einzelnen
- Einfärbungen ausgeschaltet, so wird nur die Farbe ausgeschaltet,
- die Farbmarkierungen werden dennoch gesetzt.
-
- Also werden z.B. in einem C-Kommentar stehende Strings oder Lexika-
- wörter nicht eingefärbt, egal ob die Einfärbung von C-Kommentaren an
- oder aus ist. Genauso bringt das Ausschalten der Einfärbungen zur Zeit
- keinen Geschwindigkeitszuwachs.
-
- Die Editoreinstellungen werden unter dem Namen "StormSettings.ED"
- gespeichert. In dieser ASCII Datei stehen in den letzten Zeilen die
- Farben und Register dieser Syntaxeinfärbungen entsprechend der
- Reihenfolge im Texteinstellungsfenster und der Syntax, wie sie auch
- in den Lexikadateien verwendet wird.
-
- Die Gadgets im Editorfenster sind auch über Tastatur steuerbar. Der
- Shortcut ist natürlich von der Lokalisierung abhängig, sollte aber immer
- den Qualifier "ctrl" enthalten, um Konflikte mit anderen Shortcuts zu
- vermeiden. Der Qualifier "ctrl" wird auch extra behandelt um Konflikte
- mit Texteingaben zu vermeiden (was insbesondere CTRL-I und CTRL-M
- betrifft, die jetzt nicht mehr äquivalent zu TAB und RETURN sind).
-
- Zwischen der Modified-Anzeige und der Cursorspalten-Anzeige befindet sich
- jetzt eine Hilfezeile für alle Gadgets.
-
- Um wirklich von einer 100%igen Tastaursteuerbarkeit zu reden fehlt noch
- die Möglichkeit, zwischen den Textfenstern zu springen (bzw. auch die
- Projektfenster aktivieren zu können).
-
- Das Find&Replace-Fenster ist nun auch vollständig tastatursteuerbar. Beim
- Öffnen des Fensters ist immer das Find-Stringgadget aktiv. Mit <Return> oder
- <Tab> wird der String gesucht und das Replace-Gadget aktiviert.
- Dort wird mit <Return> oder <Tab> wieder das Findgadget aktiviert. Aus diesen
- Stringgadgets heraus kann man alle anderen Gadgets dennoch durch die
- Shortcuts bedienen, wahlweise mit der rechten oder auch linken Amiga-Taste
- (die linke Amiga-Taste wird erlaubt um Konflikte mit Shortcuts von
- Programmen wie NewEdit zu vermeiden, die einen Großteil aller Shortcuts
- für sich belegen). Die Shortcuts der Cycle- und Checkboxgadgets
- reaktivieren das Stringgadget wieder, die Shortcuts der Buttons aktivieren
- das Texteditorfenster. Will man also einen Text suchen und danach in das
- Textfenster zurückkehren, so sollte man die Suche mit dem Shortcut von
- "Find" (rcommand f) auslösen. <ESC> schließt das Find&Replace-Fenster und
- aktiviert das Textfenster.
-
- Die Funktionen aus der StormShell-Toolbar können auch aus dem Editor mit
- den Funktionstasten aufgerufen werden.
-
- Eine einfache Print-Funktion ist eingebaut: der ganze Text kann ausgedruckt
- werden, dabei wird ein Progress-Fenster angezeigt, in dem der Druck auch
- abgebrochen werden kann.
-
- Tastaturbelegung:
- -----------------
-
- Shift-Cursor Up/Down
- Bewegt den Cursor auf die erste/letzte Zeile, die im Fenster angezeigt
- ist.
-
- Shift-Cursor Left/Right
- Bewegt den Cursor auf die erste/letzte Spalte in der aktuellen Zeile.
-
- Alt-Cursor Up/Down
- Springt an den Anfang/ans Ende des Textes.
-
- Alt-Cursor Left/Right
- Bewegt den Cursor auf das nächste Wort vor oder auf das letzte hinter
- dem Cursor.
-
- Shift-Delete oder Shift-Backspace
- Löscht die Zeile, auf der der Cursor steht. Die Zeile wird in die Zwischen-
- ablage gespeichert.
-
- Alt-Delete
- Löscht die Zeile ab der Cursor-Position bis zum Ende der Zeile.
-
- Alt-Backspace
- Löscht den Text zwischen der ersten Spalte bis zur Cursorposition.
-
- Help
- Schickt das Wort unter dem Cursor an die Hothelp-Library V3.0 (14. Feb 94).
-
-
- Compiler:
- ---------
-
- Im Folgenden werden die Compileränderungen seit der Veröffentlichung
- der Preview-Version aufgelistet.
-
- Im ASM-Source wurde bei DS.B o.ä. die allokierte Speichergröße
- nur als 16-Bit-Zahl ausgegeben.
-
- Ab 68020 wird der Befehl EXTB.L unterstützt.
-
- Durch Probleme bei Fließkomma-Konstanten mit angehängtem "f"
- (z.B. "0.5f") kam es gelegentlich zur Ausgabe von unsinnigen Werten.
-
- Konstrukt "#if defined (xxx)" (die Variante mit Klammern hinter dem
- define) führte zu einer Compiler-Panik.
-
- Konvertierung von "unsigned short"/"unsigned byte" auf einen längeren
- Typ geschah mittels AND und falscher Bitmaske (genau invers).
-
- Konvertierung von "unsigned byte" auf einen vorzeichenbehafteten
- Ganzzahltypen geschah fälschlich mittels EXT.
-
- Aufruf virtueller Funktionen bei Mehrfachvererbung: der
- "this"-Pointer der aufgerufenen Funktion wurde in der Variablen
- korrigiert, in der er gerade steht - auch wenn es sich dabei um
- eine noch benötigte Variable handelt.
-
- "Rundungsfehler" bei Anordnung lokaler Variablen auf dem Stack
- führte u.U. zu Variablen an ungeraden Adressen und Stack Frames
- ungerader Größe.
-
- "Geschmissene" Exceptions konnten im optimierten Modus meist nicht
- mehr aufgefangen werden.
-
- Variable "sym_handlers" (wichtig fürs Exception Handling!) wird
- jetzt im Small-Data-Model auch A4-relativ adressiert (endlich
- eine sinnvolle Verbindung von Small Data Model und OO-Programmierung).
-
- Wurde in einem Destruktor einer Klasse, die einen Member oder
- eine Basisklasse mit Destruktor besitzt, eine Inline-Funktion
- aufgerufen, so wurde vom Ende der Inline-Funktion direkt an das
- Ende des Destruktors (zur Destruierung von Membern und Basen)
- gesprungen.
-
- Beim Abtesten einzelner Bits in Bitfeldern wurde auf das falsche
- Bit zugegriffen, was sich auf Umwegen auch beim Konstruieren und
- Destruieren virtueller Basisklassen bemerkbar machte.
-
- Als Basiszeiger für die double-Mathe-Lib wird jetzt
- "_MathIeeDoubBasBase" statt "lib_MathBase" verwendet.
-
- Die Bibliotheksroutinen "lib_int2double" und "lib_double2int" wurden
- durch direkte Aufrufe von IEEEDPFix/IEEEDPFlt ersetzt.
-
- Die Repräsentierung von "long long" wurde compilerseitig auf
- eine einleuchtendere Form umgestellt (normales Big Endian).
- Außerdem werden für entsprechende Operationen die
- Bibliotheksfunktionen Add64, Sub64, Neg64, Cmp64, UMult64,
- UDiv64, UMod64, SMult64, SDiv64, SMod64 aufgerufen.
-
- Leere "_INIT_"-Funktionen werden nicht mehr erzeugt.
-
- Bei numerischer Auswertung der Ausdrücke "i != 0" und "!i" wurde
- das Ergebnis fälschlich mit AND.W statt AND.L ausmaskiert.
-
- Ein recht globaler Fehler in der Speicherverwaltung verursachte
- Adreßfehler auf 68000ern (und ungünstig align'te Daten auf
- allen anderen Amigas).
-
- Innerhalb von Konstruktoren wurden generell keine virtuellen
- Funktionen aufgerufen, selbst wenn diese eindeutig nicht über
- "this" bezogen waren.
-
- Fehler beim Zugriff auf Strukturen von mehr als 32 KByte Größe:
- Adreßoffsets >32767 wurden falsch codiert und führten zu einem
- Assemblerfehler.
-
- [7mHier finden Sie die wichtigsten Änderungen gegenüber der Version 1.05:[0m
- ======================================================================
-
- [1m[33mStormShell
- [0m
- - Kompakter und mit neuer Oberfläche
- - Neuer Optioneneinsteller mit erweiterten Optionen
- - Codebedingte Objektdateien-Ablage
- - Verhindern von Inline-Funktionen
- - Ignorieren von Exceptionspezifizieren
- - Ersetzung von nichtvorhandenen Funktionen durch eigene Stub-Funktion (rapid prototyping)
- - Codefolding (Optimierung beim Linken)
- - Anbinden von Binärdateien
- - Linkerunterstützung für StormWIZARD
- - Neue Debugger-Kontrollmöglichkeit
- - GoldED alternativ nutzbar!
-
- [33mProjektverwaltung
- [0m
- - Sortieren von Sektionen
- - Sortieren innerhalb von Sektionen
- - Neue Sektion für StormWIZARD
- - Neue Tastaturfunktionalität
-
- [33mStormEd
- [0m
- - Klammern-Check
- - Blockeinrückung
- - Farbeinsteller
- - New - Projekttemplate
-
- [33mStormRun
- [0m
- - History- und Breakpointfenster
-
- [33mStormC
- [0m
- - Neue Optimierungsstufe
- - Neues Schlüsselwort __saveds
-
- [33mStormLibrarian
- [0m
- - Einfache Erzeugung von Linker-Bibliotheken
-
- [33mStormShell
- [0m
- [3mMit neuer Oberfläche wesentlich kompakter![0m
-
- StormC 1.1 ist komplett mit StormWIZARD überarbeitet.
- Die gesamte Oberfläche ist neu erstellt, was sich in der Geschwindig-
- keit und in der Grösse der einzelnen Programmteile stark bemerkbar
- macht.
-
- War beispielsweise die StormShell in der alten Version noch über
- 500 KByte groß, so ist die aktuelle Version mit handlichen
- 300 KByte enorm abgespeckt. Die Funktionalität muß darunter selbst-
- verständlich nicht leiden. Ganz im Gegenteil.
-
- [3mSortieren in der Projektverwaltung[0m
-
- Einzelne Einträge in Projektsektionen oder auch ganze Sektionen
- können in der Reihenfolge schnell geändert (verschoben) werden.
- Ihre bevorzugte Sortierung in der Projektverwaltung wird gespeichert
- und bei jedem Anlegen neuer Projekte automatisch berücksichtigt.
-
- [3mNeue Projektsektionen[0m
-
- Die Integration von StormWIZARD ist genau so perfekt, wie die Ein-
- bindung aller anderen Porgramme. Beim Hinzufuegen von durch
- StormWIZARD erzeugten Dateien (.wizard) wird die neue Sektion
- "StormWIZARD Schnittstelle" angelegt.
-
- Bei Doppelklick auf den Eintrag wird StormWIZARD gestartet und die
- gewählte Datei geladen. Die Integration aller Entwicklungskomponenten
- garantiert eine optimale Strukturierung und Organisation Ihrer
- Projekte.
-
- [3mErweiterte Tastaturfunktionalität[0m
-
- Die Unterstützung durch zusätzliche Tastaturqualifier in der
- Projektverwaltung war bisher nur sehr stiefmütterlich behandelt.
- Bei Doppelklick auf den Programmnamen im Projekt und gleichzeitigem
- Gedrückthalten der <ALT>-Taste wird das Programm automatisch im
- Debug-Modus gestartet.<
-
- Hinzu kam nun die Unterstützung von Datatypes. Bei Doppelklick auf
- einen Eintrag in der Projektverwaltung und Gedrückthalten der
- <ALT>-Taste wird Multiview gestartet und die Datei geladen. Ist nun
- ein entsprechender Datatyp in Ihrem System installiert, wird die
- Datei angezeigt.
-
- Ein kleines Beispiel verdeutlicht, wie sinnvoll diese Erweiterung ist:
- Sie arbeiten an Ihrem Projekt und möchten auch eine AmigaGuide-
- Dokumentation erstellen. Am einfachsten fügen Sie hierfür einen neuen
- Eintrag in die Guide-Sektion ein. Bislang konnten Sie den Eintrag
- zwar doppelklicken, um den Text dann mit dem Editor zu bearbeiten,
- wollten Sie aber das Endergebnis sehen, mußte die Originaldatei
- gesucht und doppeltgeklickt oder sogar Multiview manuell gestartet
- werden.
-
- Mit der neuen Projektverwaltung genügt es, die <ALT>-Taste gedrückt-
- zuhalten, und den Eintrag in der AmigaGuide-Sektion doppelt zu
- klicken. Daraufhin wird Multiview gestartet und Ihr AmigaGuide-
- Dokument in der Anwenderfassung angezeigt. Eine Arbeitserleichterung,
- um die wir von vielen Anwendern gebeten urden!
-
- [3mNeuer Optioneneinsteller mit erweiterten Optionen[0m
-
- Der neue Optioneneinsteller wurde aufgeräumt und in seiner Bedienung
- wesentlich handlicher gestaltet. Die mit StormWIZARD verfügbaren
- Karteikartenreiter verschaffen einen Ueberblick über alle Einstell-
- möglichkeiten.
-
- [3mCodebedingte Objektdateien-Ablage[0m
-
- Viele Anwender der Version 1.0 sind begeistert von unserer Projekt-
- verwaltung und der Möglichkeit, alles zum Projekt gehörige
- strukturiert und überschaubar verwalten zu können. Selbstverständlich
- gibt es auch hierfür viele Erweiterungsmöglichkeiten, die uns genannt
- wurden.
-
- Eine wichtige Erweiterung ist die Verwaltung verschiedener Versionen
- Ihres Projektes. Gemeint sind z.B. Versionen Ihres Programmes
- für verschiedene Prozessortypen. Bislang mußte das komplette Projekt
- neu kompiliert werden, was bei umfangreichen Projekten unter Umständen
- sehr lange dauern kann.
-
- Die Version 1.1 bietet Ihnen die Möglichkeit, in jedem Projekt eine
- Schublade anzugeben, in die die Objektdateien gespeichert werden
- sollen. Für verschiedene Versionen genügt es nun, den einzelnen
- Projekten unterschiedliche Schubladen für die Objektdateien anzugeben.
- Beispielsweise "68K-Code", "020-Code",
- "060-Code", usw...<BR>
- Da in den Schubladen immer die Objektdateien mit den entsprechenden
- Optionen enthalten sind, werden immer nur die Module neu kompiliert,
- deren Quellcode tatsächlich geändert wurde!
-
- [3mVerhindern von Inline-Funktionen[0m
-
- Inline-Funktionen werden wie Makros direkt an der Stelle des Aufrufs
- im Quelltext eingefügt. Der Compiler spart damit den Aufruf der
- Funktionen und kann daher extrem gut optimieren. Durch die Benutzung
- der Inline-Funktionen wird das Programm schneller und wenn man sich
- auf kurze Inline-Funktionen beschränkt (z.B. das Auslesen des Wertes
- eines Attributs einer Klasse) auch kürzer.
-
- In der Testphase können Inline-Funktion jedoch sehr störend sein, da
- es für den Debugger unmöglich ist, den Quelltext zu Inline-Funktionen
- anzuzeigen.
-
- Mit dem Schalter kann der Compiler angewiesen werden, die Inline-
- Funktionen wie normale Funktionen aufzurufen. Der Debugger kann dann
- auch den Quelltext dieser Inline-Funktionen anzeigen und im Einzel-
- schrittmodus abarbeiten.
- Dabei stört es nicht, dass Inline-Funktionen meistens in den Header-
- Dateien der Module zu finden sind.
-
-
- [3mIgnorieren von Exceptionspezifizierern[0m
-
- Für die Testphase oder Sicherheitsfanatiker bietet C++ die Möglich-
- keit eine Funktion (auch Memberfunktionen einer Klasse) mit
- sogenannten Exceptionspecifier auszustatten: Mit Hilfe des Schlüssel-
- worts <throw> hinter dem Funktionsprototyp wird eine Liste von
- Exceptions angegeben, die durch diese Funktion höchstens ausgeworfen
- werden. Alle anderen Expcetions werden als unerwartete Exception
- behandelt.
-
- Dafür muss der Compiler um jede Funktion mit Excpetionspecifier einen
- "try-Block" setzen, der alle erlaubten Exception auffängt und wieder
- auswirft, aber alle anderen Exceptions abfängt und die Funktion
- unexpected() aufruft. Dieser zustäzliche "try- Block" macht das
- Programm länger und etwas langsamer.
-
- Es empfiehlt sich deshalb nach ausreichender Testphase den Compiler
- anzuweisen diese Exceptionspecifier zu ignorieren. Das Programm wird
- dadurch unter Umständen drastisch kürzer.
-
- [3mCodefolding (Fold Common Code)[0m
-
- Der StormLink ist in der Lage, einige Optimierungen, die ein Compiler
- macht, auch im fertigen Programm durchzuführen. Dazu gehört auch das
- Entfernen von mehrfach vorhandenem Code.
-
- Wenn der StormLink zwei Routinen entdeckt, die identisch sind, so
- daß es keinen Unterschied macht, ob das Programm die erste oder die
- zweite aufruft, ersetzt der StormLink die zweite Routine durch den
- Code der ersten. Wer behauptet, daß er ja selber programmiert und
- sowas nicht macht, bitteschön. Aber nicht wundern, wenn bei der
- Benutzung von Templates das Programm immer länger und länger wird.
- Da diese Option einiges an Laufzeit kostet, ist ihre Benutzung auch
- nur dann zu empfehlen, wenn der Optimizer des Compilers auf der
- höchsten Stufe steht.
-
- [3mErsetzung von nichtvorhandenen Funktionen[0m
-
- Diese Option wurde zur Unterstützung des sogenannten Rapid Prototyping
- implementiert. Generieren Sie einfach eine Funktion mit dem Namen
- 2_stub", schalten die genannte Option ein und programmieren drauflos.
- In der Stub-Funktion sollte vielleicht eine Debugausgabe gemacht oder
- ein Dialog mit entsprechendem Hinweis: "Funktion noch nicht implemen-
- tiert" ausgegeben werden.
-
-
- [3mAnbinden von Binärdateien[0m
-
- Die neuen Linkereigenschaft, Binärdateien anbinden zu können, fand
- man bisher eigentlich nur bei Assembler-Entwicklungssystemen. In
- StormC 1.1 wurde sie zur StormWIZARD-Unterstützung integriert, kann
- aber auch für andere Zwecke genutzt werden.
-
- Bei Aktivierung der Option "Binde WIZARD-Datei" wird die in der
- Projektverwaltung enthaltene Wizard-Datei an das Programm gelinkt.
- Damit die Daten korrekt initialisiert werden können, muss selbst-
- verständlich ein Symbolname für den Datenhunk angegeben werden. Die
- Initalisierungs-Routine für die Wizard-Daten kann dann die an das
- Programm angehängte Datei initialisieren.
-
- [3mNeue Debugger-Kontrollmöglichkeit[0m
-
- Mit der neuen Version kann zum Projekt gespeichert werden, ob das
- Ressource-Tracking prinzipiell aktiv sein soll oder nicht. Bei
- einigen Projekten ist es nicht ratsam, das Ressource-Tracking zu
- aktivieren, da vielleicht selbst derartige Patches vorgenommen
- werden oder eventuell das Anfordern und Freigeben von Ressourcen
- auf mehrere unabhänige Tasks verteilt ist.
-
- Mit dem Cycle-Gadget im Optionen-Feld kann eingestellt werden, wie
- sich der Debugger beim Starten verhalten soll. Mit der Einstellung
- "Debugger im Single-Step-Modus starten", kann ab sofort auch der
- Startup-Code untersucht werden.
-
-
- [3mGoldED alternativ nutzbar![0m
-
- Der wohl zur Zeit einzige Editor mit allen nur erdenklichen Features
- ist der GoldED. Daher entschieden wir uns, diesen als alternativen
- Editor an unser Entwicklungssystem anzupassen. Es genügt das
- Merkmal GOLDED=TRUE einzutragen und anstelle von StormED wird GoldED
- gestartet. Für viele von ihnen ist die Editorfunktionalität mitver-
- antwortlich bei der Kaufentscheidung. Durch die Einbindung von
- GoldED dürfte für viele die Entscheidung getroffen sein.
-
- [3mStormEd Farbeinsteller[0m
-
- Vielfach gewünscht, ist es nun in der aktuellen Version einfach
- möglich, die farbliche Textdarstellung mit der Maus zu verändern.
- Die einfache Einstellmöglichkeit löst damit die bislang komplizierte
- Angabe der Vorder- und Hintergrundfarbe in der jeweiligen Settings-
- Datei ab.
-
- [3mKlammern-Check und Blockeinrückung[0m
-
- Die automatische Ueberprüfung der Klammernstruktur ist sehr hilfreich
- bei tief geschachtelten Konstruktionen. All zu leicht wird eine
- Klammer vergessen und man erhält eine Fehlermeldung, die nicht
- unbedingt auf eine fehlende Klammer schließen lässt. Auch bei der
- Programmierung von Installer-Skripten ist diese Funktion sehr
- hilfreich.
-
- [3mNew - Projekttemplate[0m
-
- Genau wie beim Hinzufügen neuer Texte zu einem Projekt wird beim
- Neuanlegen eines Textes bereits der Speicherort erfragt. Mit der
- dabei angegebenen Dateiendung kann dann das entsprechende Template
- für den neuen Text geladen und verwendet werden.
-
- [33mStormRun[28m
-
- [3mHistory- und Breakpointfenster[0m
-
- Im Debugger StormRUN werden alle Debuggschritte protokolliert und
- können im History-Fenster zurückverfolgt werden. Das neue Breakpoint-
- Fenster zeigt alle gesetzten Unterbrechungspunkte. Per Doppelklick
- kann gezielt an die jeweilige Programmstelle gesprungen werden.
- Selbstverständlich ist es möglich, einzelne oder alle Unterbrechungs-
- punkte zu löschen.
-
- [33mStormC[28m
-
- [3mNeue Optimierungsstufen[0m
-
- Bei großen Projekten ist die Turnaroundzeit oft sehr entscheidend
- für die Nutzung eines Compilers. Um die Wartezeiten beim Kompilieren
- und Linken zu verkürzen, wurde eine neue Optimierungstufe
- implementiert die besonders schnell Code generiert, dabei aber
- keinen Wert auf die Codequalität legt.
-
- Auch der neue Linker konnte um den Faktor 2 deutlich beschleunigt
- werden und steuert seinen Teil zu besonders kurzen Turnarounds bei!
-
- [3mNeues Schlüsselwort "__saveds"[0m
-
- Was bisher mit der Funktion "geta4" manuell konvertiert werden
- mußte, ist in der neuen Version zur besseren Kompatibilität
- integriert.
-
-
- [33mStormLibrarian[28m
-
- [3mEinfache Erzeugung von Linker-Bibliotheken[0m
-
- Nicht nur die Erzeugung von Shared-Libraries ist eine wichtige
- Bedingung für ein echtes Entwicklungssystem, sondern auch die
- Möglichkeit, Funktionsgruppen in einer Linkerbibliothek zusammen-
- fassen zu können. Bei der Erzeugung von Bibliotheken wie beispiels-
- weise der Amiga.Lib oder der Storm.Lib muß bereits beim Kompilieren
- der Module darauf geachtet werden, dass jede Funktion am Besten in
- einem eigenen Hunk abgelegt wird. Der Compiler bietet dazu die Option
- "Eigener Hunk für jede Funktion". Nach dem Kompilieren müssen die
- einzelnen Module zu einer Library "gejoint" werden, was lästige
- Tipparbeit bedeutet.
-
- Unser neuer StormLibrarian hilft Ihnen dabei und bietet die Möglich-
- keit Objektmodule zu Library-Projekten zusammenzufassen. Haben Sie
- Ihr Projekt erstellt, genügt ein einfacher Klick auf "Erzeugen" und
- die Bibliothek wird unter dem angegebenen Namen erzeugt. Bei
- Veränderung der Objektmodule muß nun lediglich das Projekt in den
- StormLibrarian geladen und die Bibliothek neu erzeugt werden - fertig!
-
-
- [7mDie Häufigsten Fragen und ihre Antworten!
- *****************************************[0m
-
- Frage 1:
- ********
- [7m[33mWarum hat StormC keinen "Global Optimizer"?[28m[[0m
-
- Antwort:
-
- Ein "Global Optimizer" optimiert ein Programm unter Beachtung der
- ganzen Funktion und nicht nur einzelner Anweisungen oder Ausdrücke.
- Dadurch kann ein Global Optimizer z.B. Ausdrücke, die in einer
- Schleife ausgewertet werden, aber in jedem Scheifendurchlauf immer
- das gleiche Ergebnis liefern müssen, aus der Schleife herausziehen
- und schon vor der Schleife bearbeiten.
-
- StormC kann diese globale Optimierung bislang nicht, ist allerdings
- schon in Version 1 dazu vorbereitet, in einer der nächsten Versionen
- auch diese Optimierung zu beherrschen.
-
- Allerdings kann StormC schon jetzt einige Optimierungen, die auch
- Aufgaben des Global Optimizers sind. Dazu gehört insbesondere die
- globale CPU und FPU Registerverteilung in den höheren Optimierungs-
- stufen. Die Register werden in der ganzen Funktion unter Beachtung
- aller Variablenzuweisungen und Funktionsaufrufe in der Funktion
- optimal verteilt.
-
- Frage 2:
- ********
-
- [7m[33mWarum ist selbst ein kleines Programm wie "Hello World" gleich
- mehrere KBytes lang?[28m[0m
-
- Antwort:
-
- Die mitgelieferte StormC Bibliothek "storm.lib" ist eine ANSI C
- Bibliothek.
-
- Für ein "Hello World" Programm muß aus dieser Bibliothek die "printf"
- Funktion gelinkt werden. Dadurch kommen aber auch unbenutzte
- Funktionen z.B. für die Ausgabe von Integer und Fließkommazahlen ins
- Programm, da aus dem "printf" Befehl nicht ersichtlich ist, welche
- der Umwandlungen nötig sind. Außerdem werden alle Ausgaben in Dateien
- gepuffert durchgeführt.
-
- Dadurch werden auch kurze Programm relativ groß.
-
- Benutzen Sie bitte für ANSI-C-Programm unsere mitgelieferte
- "stormamiga.lib"
-
- Frage 3:
- ********
- [7m[33mWie kann ich denn ein "Hello World" Programm unter Nutzung der
- Storm.Lib wirklich kurz kompilieren?[28m[0m
-
- Antwort:
-
- Kann man auf Fließkommaausgabe verzichten und reicht einem die
- Pufferung des AmigaDOS aus, kann man jederzeit zur Ausgabe das
- AmigaDOS direkt verwenden. Die Funktionen "VPrintf" und "VFPrintf"
- ermöglichen nämlich direkt die Ausgabe ähnlich wie "printf" auf
- AmigaDOS Dateien. Allerdings sind diese Funktionen nicht 100% ANSI
- kompatibel.
-
- Weitere Möglichkeiten bietet natürlich der Verzicht auf das auto-
- matische Öffnen und Schließen der Bibliotheken, denn die dazu
- benutzten Funktionen bieten eine komfortable Fehlermeldungsausgabe
- mit Unterscheidung zwischen Workbench und CLI Start eines Programms
- und Beachtung alter Betriebssystemversionen 1.3 und älter. Dieser
- Komfort ist nicht für jedes Programm notwendig.
-
- Man kann einen Minimalstartupcode, den man in Assembler schreibt als
- eigenen Startupcode benutzen und darin nur die notwendigsten Arbeiten
- erledigen, z.B. das kleine Datenmodell unterstützen ohne gleichzeitig
- residente Programme zu erlauben.
-
- Frage 4:
- ********
- [7m[33mWarum kompiliert der MaxonC++ Compiler schneller als StormC?[28m[0m
-
- Antwort:
-
- StormC erzeugt sauberen optimierten Code mit optimaler Registerbe-
- nutzung und vielfältigen Optimierungen. Außerdem ist StormC konsequent
- auf den PowerPC vorbereitet und verzichtet deshalb auf den Einsatz
- schneller aber fehleranfälliger Assemblerroutinen. Leider ist darum
- die derzeitige Version des Compilers nicht so schnell wie MaxonC++,
- allerdings arbeiten wir an einer speziellen Optimierzerstufe für die
- Entwicklungsphase eines Programms mit noch kürzeren Übersetzungszeiten.
-
- Frage 5:
- ********
- [7m[33mWarum ist die Bibliothek "storm.lib" so groß und warum gibt es im
- Gegensatz zu SAS/C nur eine Bibliothek?[28m[0m
-
- Antwort:
-
- StormC unterstützt ein weiterentwickeltes Objektformat, das auch bei
- Linkerbibliotheken zum Einsatz kommt. Dieses Format ist 100%
- kompatibel zum alten (sowohl aufwärts, wie auch abwärts), allerdings
- können der StormC Linker und der StormC Compiler mit diesem Format
- mehrere Datenmodelle in einer Objektdatei aufnehmen. Damit bleibt
- für Sie nicht mehr die fehleranfällige Auswahl der richtigen
- Bibliothek zu ihren gewählten Compileroptionen, sondern der Linker
- wählt aus der großen Bibliothek "storm.lib" die Teile aus, die für
- das gewählte Datenmodell (großes Datenmodell oder eines der beiden
- kleinen Datenmodelle) gerade paßt. Deshalb ist die "storm.lib" etwa
- so groß, wie drei einzelne Bibliotheken für jedes Datenmodell
- zusammen.
-
- In Zukunft wird StormC auch noch verschiedene Codemodelle und CPU
- bzw. FPU Modelle in der Bibliothek unterstützen, sodaß die
- "storm.lib" und alle weiteren Bibliotheken jeweils optimale
- Programmeerzeugung automatisch erlauben.
-
- Frage 6:
- ********
- [7m[33mWarum kommt es zu der Linker-Fehlermeldung "Symbol _exit nicht
- definiert", wenn man als Shared-Library linkt?[28m[0m
-
- Antwort:
-
- Die Shared-Library ruft die ANSI-Funktion exit() auf. Das kann sie
- zum einen explizit, weil Sie diese Funktion verwenden, oder zum
- anderen implitzit durch Linker-Bibliotheken, die diese Funktion
- verwenden. Die "Storm.Lib" nutzt diese Funktion beim automatischen
- Öffnen der benutzten Shared-Libraries, z.B. der "utility.library".
-
- Grundsätzlich darf aber eine Shared-Library die Funktion exit() nicht
- verwenden, da sie nicht einfach so beendet werden kann.
-
- Wie vermeidet man den Aufruf?
-
- Man darf das automatische Öffnen von benutzten Shared-Libraries nicht
- verwenden, sondern muß die Bibliotheken wie im Handbuch beschrieben,
- öffnen und schließen.
-
- Um herauszufinden, welche Bibliotheken alle benutzt werden, sollte
- man zuerst eine Funktion:
-
- void exit() {} in die Shared-Library aufnehmen. Jetzt läßt sich die
- Library linken.
-
- Verwenden Sie die Linker-Option "Map-Datei schreiben". Der Linker
- erzeugt eine Datei mit der Endung ".map". Suchen Sie alle INIT-
- Funktionen, die den Basisnamen einer Shared-Library enthalten,
- z.B. INIT_1_UtilityBase.
-
- Öffnen Sie diese Bibliotheken nun alle mit Ihren eigenen Routinen.
- Denken Sie auch daran, die entsprechende Basisvariable (z.B.
- UtilityBase) selbst zu deklarieren. Vergessen Sie nicht, die eigene
- exit()-Funktion wieder aus Ihrem Source zu entfernen.
-
-
- Fehler im Zusammenhang mit MagicMenu und möglicherweise mit SUN-Mouse-Utilities
- -------------------------------------------------------------------------------
-
- Bei installiertem MagicMenu friert der Bildschirm ein, wenn bei aktivem
- Piktogramm-Fenster die rechte Maustaste gedrückt wird und sich der
- Mauszeiger über einem Piktogramm befindet. Durch eine Inkonformität von MagicMenu
- werden Mousemove-Nachrichten geschickt, obwohl die rechte Maustaste gedrückt
- ist. In diesem Fall versucht dann die StormShell die Hilfezeile im Fenster
- auszugeben und erzeugt dadurch das Einfrieren des Bildschirms. Im Falle von
- MagicMenu dauert es ca. 10 Sekunden und man kann normal weiterarbeiten.
-
- Zu ähnlichen Problemen kann es auch mit verschiedenen SUN-Mouse Utilities
- kommen.
-
- Bei Fragen wenden Sie sich bitte an:
-
- HAAGE & PARTNER Computer GmbH
- Mainzer Straße 10A
- 61191 Rosbach v.d.H.
-
- Tel: 06007/930050
- Fax: 06007/7543
-
- Compuserve: 100654,3133
- Internet: 100654.3133@compuserve.com
- Web Page: http://ourworld.compuserve.com/homepages/haage_partner
-
-
-
- Zum Schluß möchten wir uns bei unseren aktiven Betatestern bedanken.
-
- Vielen Dank an:
-
- Dietmar Augustin
- Olaf Barthel
- Holger Burkarth
- Thomas Bayen
- Bernhard Büchter
- Jan-Claas Dirks
- David Göhler
- Alexander Pratsch
- Andreas Pfohl
- Constantin Rack
- Michael Rock
- Jürgen Schildmann
- Carsten Schlote
- Stephan Schüerholz
- Thomas Wilhelmi
-
-
- (c) 1995/1996 HAAGE & PARTNER Computer GmbH
-
-